package com.itcast.demo_one.kotlin

fun main(args: Array<String>) {
    // 创建汽车对象
    val myCar = Cars()

    println("准备开车回家...")

    // 使用 with 操作汽车对象
    with(myCar) {
        startEngine()       // 直接调用方法
        turnOnAC()          // 不需要 myCar.turnOnAC()
        playMusic("Jazz")   // 直接访问方法
        setNavigation("家") // 设置目的地

        // 连续加速
        repeat(3) {
            accelerate()
        }

        // 显示最终状态
        displayStatus()
    }

    // 显示最终状态
    // myCar.displayStatus()

    println("\n旅程结束，安全到家！")
}

fun test01(){
    // 1. 安全处理可空对象
    val name: String? = "it cast"

    /*name?.uppercase()
    name?.length
    name?.substring(0, 3)*/

    val result = name?.let {
        println(it.uppercase())
        println(it.length)
        println(it.substring(0, 3))
        "12212112"
    }
    println(result)

    // 6. takeIf/takeUnless - 条件检查
    // 根据条件获取或排除对象
    /*
    val input = "kotlin"
    val result = input.takeIf { it.length > 10 }?.uppercase() // "KOTLIN"
    println(result)
    */

    // 实际应用：验证检查
    /* val email = "user#example.com"
     val validEmail = email.takeIf { it.contains("@") } ?: throw Error("错误的邮箱地址")
     println(validEmail)*/
}


// 定义一个简单的汽车类
class Cars {
    var isEngineRunning = false
    var isACOn = false
    var currentMusic = ""
    var navigationDestination = ""
    var speed = 0

    fun startEngine() {
        isEngineRunning = true
        println("引擎已启动")
    }

    fun turnOnAC() {
        isACOn = true
        println("空调已开启")
    }

    fun playMusic(genre: String) {
        currentMusic = genre
        println("正在播放 $genre 音乐")
    }

    fun setNavigation(destination: String) {
        navigationDestination = destination
        println("导航目的地设置为: $destination")
    }

    fun accelerate() {
        speed += 10
        println("加速至 $speed km/h")
    }

    fun displayStatus() {
        println("\n=== 当前汽车状态 ===")
        println("引擎状态: ${if (isEngineRunning) "运行中" else "关闭"}")
        println("空调状态: ${if (isACOn) "开启" else "关闭"}")
        println("播放音乐: ${currentMusic.ifEmpty { "无" }}")
        println("导航目的地: ${navigationDestination.ifEmpty { "未设置" }}")
        println("当前速度: $speed km/h")
    }
}